package co.gov.medellin.ssti.sub.web.form;

import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.Globals;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;

import co.gov.medellin.ssti.sub.common.util.FiltrosReportesUtil;
import co.gov.medellin.ssti.sub.common.util.Utility;
import co.gov.medellin.ssti.sub.model.vo.AreaVO;
import co.gov.medellin.ssti.sub.model.vo.CondicionConsultaVO;
import co.gov.medellin.ssti.sub.model.vo.ProgramaVO;
import co.gov.medellin.ssti.sub.model.vo.RepAtributoVO;
import co.gov.medellin.ssti.sub.model.vo.ReporteTotalBeneficiosOtorVO;
import co.gov.medellin.ssti.sub.model.vo.SedeVO;
import co.gov.medellin.ssti.sub.model.vo.SubprogramaVO;

public class ReportTotalBeneficiariosForm extends ActionForm {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3234991413547943688L;

	// Collections
	private Collection<SedeVO> sedes = new ArrayList<SedeVO>();
	private Collection<AreaVO> areas = new ArrayList<AreaVO>();
	private Collection<ProgramaVO> programas = new ArrayList<ProgramaVO>();
	private Collection<SubprogramaVO> subprogramas = new ArrayList<SubprogramaVO>();
	private Collection<ReporteTotalBeneficiosOtorVO> beneficios = new ArrayList<ReporteTotalBeneficiosOtorVO>();

	//
	private String codeSede;
	private String codeArea;
	private String codePrograma;
	private String codeSubprograma;

	// CondicionConsultaVO
	private Collection<CondicionConsultaVO> filtros = new ArrayList<CondicionConsultaVO>();

	private final Collection<RepAtributoVO> codAtributos = FiltrosReportesUtil.codCampos;

	// codigo del atributo (ej: "VFL_CODIGO_COMUNA")
	private String codeAtributo = "";
	// label o etiqueta que describe el atributo (ej: "COMUNA/CORREGIMIENTO).
	private String etiquetaAtributo = "";

	// codigo del operador (ej: ">=")
	private String codeOperador = "";
	// label o etiqueta que describe el operador (ej: "[>=] Mayor o Igual")
	private String etiquetaOperador = "";

	// Aplica para valores elegidos de una lista, si el valor es ingresado por
	// el usuario, la etiqueta sera el mismo valor.
	// Codigo del valor1 (ej: "A").
	private String valor1 = "";
	// label o etiqueta del valor1 (ej: "AFROCOLOMBIANO").
	private String etiquetaValor1 = "";

	private String valor2 = "";

	private String fechaIni = ""; // fecha inicial elegida (formato dd/MM/yyyy).
	private String fechaFin = ""; // fecha final elegida (formato dd/MM/yyyy).

	// codigo de la operacion (ej: Utility.OP_ADD_FILTRO). Los codigos de
	// operaciones estan el la clase Utility.
	private String operacion = "";

	// Collection para operadores. CondicionConsultaVO
	private Collection<CondicionConsultaVO> operadores;

	// Collection para valores (si elige un atributo que carga por defecto sus
	// valores) CondicionConsultaVO
	private Collection<CondicionConsultaVO> valores1;
	private Collection<CondicionConsultaVO> valores2;

	// tipo correspondiente al atributo seleccionado (numerico, alfanumerico,
	// fecha)
	private String tipoCampo = "";

	private int indexFilter; // Indice (empezando en 1) del filtro a ser
								// eliminado.

	public void reset(ActionMapping mapping, HttpServletRequest request) {
		MessageResources messageResources = (MessageResources) request
				.getAttribute(Globals.MESSAGES_KEY);
	}

	// Getters & Setters

	public Collection<SedeVO> getSedes() {
		return sedes;
	}

	public void setSedes(Collection<SedeVO> sedes) {
		this.sedes = sedes;
	}

	public Collection<AreaVO> getAreas() {
		return areas;
	}

	public void setAreas(Collection<AreaVO> areas) {
		this.areas = areas;
	}

	public Collection<ProgramaVO> getProgramas() {
		return programas;
	}

	public void setProgramas(Collection<ProgramaVO> programas) {
		this.programas = programas;
	}

	public Collection<SubprogramaVO> getSubprogramas() {
		return subprogramas;
	}

	public void setSubprogramas(Collection<SubprogramaVO> subprogramas) {
		this.subprogramas = subprogramas;
	}

	public String getCodeSede() {
		return codeSede;
	}

	public void setCodeSede(String codeSede) {
		this.codeSede = codeSede;
	}

	public String getCodeArea() {
		return codeArea;
	}

	public void setCodeArea(String codeArea) {
		this.codeArea = codeArea;
	}

	public String getCodePrograma() {
		return codePrograma;
	}

	public void setCodePrograma(String codePrograma) {
		this.codePrograma = codePrograma;
	}

	public String getCodeSubprograma() {
		return codeSubprograma;
	}

	public void setCodeSubprograma(String codeSubprograma) {
		this.codeSubprograma = codeSubprograma;
	}

	public Collection<CondicionConsultaVO> getFiltros() {
		return filtros;
	}

	public void setFiltros(Collection<CondicionConsultaVO> filtros) {
		this.filtros = filtros;
	}

	public String getCodeAtributo() {
		return codeAtributo;
	}

	public void setCodeAtributo(String codeAtributo) {
		this.codeAtributo = codeAtributo;
	}

	public String getEtiquetaAtributo() {
		return etiquetaAtributo;
	}

	public void setEtiquetaAtributo(String etiquetaAtributo) {
		this.etiquetaAtributo = etiquetaAtributo;
	}

	public String getCodeOperador() {
		return codeOperador;
	}

	public void setCodeOperador(String codeOperador) {
		this.codeOperador = codeOperador;
	}

	public String getEtiquetaOperador() {
		return etiquetaOperador;
	}

	public void setEtiquetaOperador(String etiquetaOperador) {
		this.etiquetaOperador = etiquetaOperador;
	}

	public String getValor1() {
		return valor1;
	}

	public void setValor1(String valor1) {
		this.valor1 = valor1;
	}

	public String getEtiquetaValor1() {
		return etiquetaValor1;
	}

	public void setEtiquetaValor1(String etiquetaValor1) {
		this.etiquetaValor1 = etiquetaValor1;
	}

	public String getValor2() {
		return valor2;
	}

	public void setValor2(String valor2) {
		this.valor2 = valor2;
	}

	public String getFechaIni() {
		return fechaIni;
	}

	public void setFechaIni(String fechaIni) {
		this.fechaIni = fechaIni;
	}

	public String getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}

	public String getOperacion() {
		return operacion;
	}

	public void setOperacion(String operacion) {
		this.operacion = operacion;
	}

	public Collection<CondicionConsultaVO> getOperadores() {
		return operadores;
	}

	public void setOperadores(Collection<CondicionConsultaVO> operadores) {
		this.operadores = operadores;
	}

	public Collection<CondicionConsultaVO> getValores1() {
		return valores1;
	}

	public void setValores1(Collection<CondicionConsultaVO> valores1) {
		this.valores1 = valores1;
	}

	public Collection<CondicionConsultaVO> getValores2() {
		return valores2;
	}

	public void setValores2(Collection<CondicionConsultaVO> valores2) {
		this.valores2 = valores2;
	}

	public String getTipoCampo() {
		return tipoCampo;
	}

	public void setTipoCampo(String tipoCampo) {
		this.tipoCampo = tipoCampo;
	}

	public int getIndexFilter() {
		return indexFilter;
	}

	public void setIndexFilter(int indexFilter) {
		this.indexFilter = indexFilter;
	}

	public Collection<RepAtributoVO> getCodAtributos() {
		return codAtributos;
	}

	public Collection<ReporteTotalBeneficiosOtorVO> getBeneficios() {
		return beneficios;
	}

	public void setBeneficios(
			Collection<ReporteTotalBeneficiosOtorVO> beneficios) {
		this.beneficios = beneficios;
	}

}
